﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using AccesoDatos.Objetos;
using AccesoDatos.Manejador;

namespace Autorizacion_facturas_caja.Infonavit
{
    public partial class frmInfonavit_Captura : Form
    {
        objRH obj = new objRH();
        Manejador_Infonavit MI = new Manejador_Infonavit();
        Manejador_Calcula_Fecha MCF = new Manejador_Calcula_Fecha();
        Manejador_Formulas MF = new Manejador_Formulas();
        objInfonavit obj1 = new objInfonavit();
        objInfonavit obj2 = new objInfonavit();
        objVacaciones objV = new objVacaciones();

        #region FUNCIONES
        string sucursal;
        //double Smin = 62.33;
        int dias;
        int dias_trabajados;
        int dias_promedio;

        public frmInfonavit_Captura(objRH objetos, string suc, int bandera)
        {
            InitializeComponent();

            label9.Visible = false;
            label7.Visible = false;
            label20.Visible = false;
            label8.Visible = true;
            sucursal = suc;
            obj = objetos;
            obj2 = MI.ConsultaSalarioMin(12);
            label21.Text = obj2.Salario_Minimo;
            dias = MCF.calculaAntiguedad_Year(obj.FechaIngreso, DateTime.Today);
            objV.Dias_Correspondientes = MI.DiasCorrespondientes(dias + 1);
            if (objV.Dias_Correspondientes == 1) obj.Dias_Correspondientes = 6;
            if (objV.Dias_Correspondientes > 1)
            {
                dias_trabajados = MCF.calculaDiasVacaciones(obj.Fecha_Inicio, DateTime.Today);
                obj.Dias_Correspondientes = MF.calculaDiasPromedio(objV.Dias_Correspondientes, dias_trabajados);
            }

            if (bandera == 0) { llenar(); btnModificar.Visible = false; }
            if (bandera == 1) { llenarTodo(); btnAgregar.Visible = false; }
        }

        private void llenarTodo()
        {
            label4.Text = obj.Nombre_completo;
            label18.Text = sucursal;
            label16.Text = obj.FechaIngreso.ToShortDateString();
            label6.Text = obj.Puesto;
            label5.Text = obj.Departamento;
            label15.Text = String.Format("$ {0:###,##0.00}", obj.Sueldo_Mensual);
            label27.Text = String.Format("$ {0:###,##0.00}", obj.Salario_dia);
            label28.Text = String.Format("$ {0:###,##0.00}", obj.Cantidad_SeguroS);

            obj1 = MI.InfonavitEmpleado(obj.Id_Empleado.ToString());

            if (obj1.Tipo_De_Infonavit == rBCuotaFija.Text.Trim())
            {
                rBCuotaFija.Checked = true;
                btnCalcular.Visible = true;
                toolTip1.SetToolTip(label29, "EL MONTO A DESCONTAR SERA EL MISMO QUE APARECE EN CUOTA FIJA");
            }
            if (obj1.Tipo_De_Infonavit == rBVSM.Text.Trim()) { rBVSM.Checked = true; btnCalcular.Visible = true; }
            if (obj1.Tipo_De_Infonavit == rBPorcentual.Text.Trim()) { rBPorcentual.Checked = true; btnCalcular.Visible = false; }
            if (obj1.Tipo_De_Infonavit == rBRemodela.Text.Trim())
            {
                rBRemodela.Checked = true; btnCalcular.Visible = true;
                toolTip1.SetToolTip(label29, "EL MONTO A DESCONTAR SERA EL MISMO QUE APARECE EN CUOTA FIJA");
            }

            txbNumDeCredito.Text = obj1.Numero_De_Credito;
            txbDescInfon.Text = obj1.Descuento_Infonavit;
            label29.Text = obj1.Monto_Descontar;

        }

        private void llenar()
        {
            label4.Text = obj.Nombre_completo;
            label18.Text = sucursal;
            label16.Text = obj.FechaIngreso.ToShortDateString();
            label6.Text = obj.Puesto;
            label5.Text = obj.Departamento;
            label15.Text = String.Format("$ {0:###,##0.00}", obj.Sueldo_Mensual);
            label27.Text = String.Format("$ {0:###,##0.00}", obj.Salario_dia);
            label28.Text = String.Format("$ {0:###,##0.00}", obj.Cantidad_SeguroS);
        }
        #endregion

        #region BOTONES
        private void btnAgregar_Click(object sender, EventArgs e)
        {
            errorProvider1.Clear();
            if (validar() == true)
            {
                if (rBVSM.Checked == true) obj1.Tipo_De_Infonavit = rBVSM.Text;
                if (rBPorcentual.Checked == true) obj1.Tipo_De_Infonavit = rBPorcentual.Text;
                if (rBCuotaFija.Checked == true) obj1.Tipo_De_Infonavit = rBCuotaFija.Text;
                if (rBRemodela.Checked == true) obj1.Tipo_De_Infonavit = rBRemodela.Text;

                obj1.Id_Empleado = obj.Id_Empleado;
                obj1.Numero_De_Credito = txbNumDeCredito.Text;
                obj1.Descuento_Infonavit = txbDescInfon.Text;
                obj1.Monto_Descontar = label29.Text;

                bool resp = MI.InsercionInfonavit(obj1.Id_Empleado, obj1.Numero_De_Credito,
                    obj1.Tipo_De_Infonavit, obj1.Descuento_Infonavit, obj1.Monto_Descontar);

                if (resp)
                {
                    MessageBox.Show("SE HAN GUARDADO LOS DATOS CORRECTAMENTE");
                    Close();
                }
                else MessageBox.Show("ERROR, NO SE GUARDARON LOS DATOS");
            }
            else { MessageBox.Show("ERROR, LLENE TODOS LOS CAMPOS"); }
        }

        private void btnCalcular_Click(object sender, EventArgs e)
        {
            errorProvider1.Clear();
            try
            {
                if (rBVSM.Checked == true)
                {
                    label29.Text = (Math.Round(MF.calcula_VSM(Convert.ToDouble(obj2.Salario_Minimo), Convert.ToDouble(txbDescInfon.Text))).ToString());
                }
                if (rBCuotaFija.Checked == true)
                {
                    label29.Text = txbDescInfon.Text;
                }
                if (rBRemodela.Checked == true)
                {
                    label29.Text = txbDescInfon.Text;
                }
            }
            catch { MessageBox.Show("LLENE TODOS LOS CAMPOS", "ALERTA"); }
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            Close();
        }
        private void btnModificar_Click(object sender, EventArgs e)
        {
            errorProvider1.Clear();
            if (validar() == true)
            {
                if (rBVSM.Checked == true) obj1.Tipo_De_Infonavit = rBVSM.Text;
                if (rBPorcentual.Checked == true) obj1.Tipo_De_Infonavit = rBPorcentual.Text;
                if (rBCuotaFija.Checked == true) obj1.Tipo_De_Infonavit = rBCuotaFija.Text;
                if (rBRemodela.Checked == true) obj1.Tipo_De_Infonavit = rBRemodela.Text;

                obj1.Id_Empleado = obj.Id_Empleado;
                obj1.Numero_De_Credito = txbNumDeCredito.Text;
                obj1.Descuento_Infonavit = txbDescInfon.Text;
                obj1.Monto_Descontar = label29.Text;

                bool resp = MI.Modificarinfonavit(obj1.Id_Infonavit, obj1.Numero_De_Credito,
                    obj1.Tipo_De_Infonavit, obj1.Descuento_Infonavit, obj1.Monto_Descontar);

                if (resp)
                {
                    MessageBox.Show("SE HAN GUARDADO LOS DATOS CORRECTAMENTE", "AVISO");
                    Close();


                }
                else MessageBox.Show("NO SE GUARDARON LOS DATOS", "ALERTA");
            }
            else { MessageBox.Show("LLENE TODOS LOS CAMPOS", "ALERTA"); }
        }

        private bool validar()
        {
            bool val = true;
            if (txbNumDeCredito.Text == "")
            {
                errorProvider1.SetError(txbNumDeCredito, "DEBE LLENAR ESTE CAMPO"); val = false;
            } if (txbDescInfon.Text == "")
            {
                errorProvider1.SetError(txbDescInfon, "DEBE LLENAR ESTE CAMPO"); val = false;
            } if (rBVSM.Checked == false && rBPorcentual.Checked == false && rBCuotaFija.Checked == false && rBRemodela.Checked == false)
            {
                errorProvider1.SetError(groupBox5, "DEBE SELECCIONAR ALGUN CAMPO"); val = false;
            } if (label29.Text.Trim() == "")
            {
                errorProvider1.SetError(label29, "DEBE SELECCIONAR ALGUN CAMPO"); val = false;
            } if (val == false)
            {
                return false;
            }
            else { return val; }
        }

        #endregion

        #region  EVENTOS
        private void frmInfonavit_Captura_Load(object sender, EventArgs e)
        {
            toolTip1.SetToolTip(btnCalcular, "CALCULAR");
            toolTip1.SetToolTip(btnModificar, "MODIFICAR");
            toolTip1.SetToolTip(btnCancelar, "CANCELAR");
            btnCalcular.Visible = false;
        }

        private void rBVSM_CheckedChanged(object sender, EventArgs e)
        {

            if (rBVSM.Checked == true)
            {
                label9.Visible = false;
                label7.Visible = true;
                label20.Visible = false;
                label8.Visible = false;
                txbDescInfon.Text = "";
                label29.Text = " ";
                btnCalcular.Visible = true;
            }
            else { label7.Visible = false; }
        }

        private void rBCuotaFija_CheckedChanged(object sender, EventArgs e)
        {
            if (rBCuotaFija.Checked == true)
            {
                label9.Visible = false;
                label7.Visible = false;
                label20.Visible = false;
                label8.Visible = true;
                txbDescInfon.Text = "";
                label29.Text = " ";
                btnCalcular.Visible = false;
            }
            else { label8.Visible = false; }
        }

        private void rBPorcentual_CheckedChanged(object sender, EventArgs e)
        {
            if (rBPorcentual.Checked == true)
            {
                label8.Visible = false;
                label7.Visible = false;
                label20.Visible = false;
                label9.Visible = true;
                txbDescInfon.Text = "25%";
                label29.Text = " ";
                txbDescInfon.Enabled = false;
                btnCalcular.Visible = false;
                label29.Text = (Math.Round(MF.Porciento(Convert.ToDouble(obj.Cantidad_SeguroS), obj.Dias_Correspondientes)).ToString());
            }
            else
            {
                txbDescInfon.Text = "";
                label9.Visible = false;
                txbDescInfon.Enabled = true;
            }
        }

        private void rBRemodela_CheckedChanged(object sender, EventArgs e)
        {
            if (rBRemodela.Checked == true)
            {
                label8.Visible = false;
                label7.Visible = false;
                label9.Visible = false;
                label20.Visible = true;
                label29.Text = " ";
                btnCalcular.Visible = false;
            }
            else { label20.Visible = false; }
        }

        private void txbDescInfon_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (Char.IsDigit(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsControl(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsSeparator(e.KeyChar))
            {
                e.Handled = false;
            }
            else if (Char.IsPunctuation(e.KeyChar))
            {
                e.Handled = false;
            }
            else
            {
                e.Handled = true;
            }
        }

        private void txbDescInfon_TextChanged(object sender, EventArgs e)
        {
            if (rBCuotaFija.Checked == true || rBRemodela.Checked == true)
            {
                label29.Text = txbDescInfon.Text;
            }
        }
        #endregion
    }
}
